From 4b699e935577d83c063eaa95ccf32563d586e7aa Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Fri, 16 Dec 2016 01:01:43 +0100 Subject: [PATCH] extensions/cairo: implement rgb8 to cairo32, speeding up RGB linear half display --- extensions/cairo.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/extensions/cairo.c b/extensions/cairo.c index 2d807cb..457b938 100644 --- a/extensions/cairo.c +++ b/extensions/cairo.c @@ -125,6 +125,24 @@ conv_rgbA8_cairo32_le (unsigned char *src, unsigned char *dst, long samples) return samples; } +static inline long +conv_rgb8_cairo32_le (unsigned char *src, unsigned char *dst, long samples) +{ + long n = samples; + while (n--) + { + unsigned char red = *src++; + unsigned char green = *src++; + unsigned char blue = *src++; + + *dst++ = blue; + *dst++ = green; + *dst++ = red; + *dst++ = 0xff; + } + return samples; +} + @@ -305,6 +323,10 @@ init (void) babl_conversion_new (babl_format ("R'G'B'A u8"), f32, "linear", conv_rgbA8_cairo32_le, NULL); + + babl_conversion_new (babl_format ("R'G'B' u8"), f32, "linear", + conv_rgb8_cairo32_le, NULL); + babl_conversion_new (babl_format ("Y'A u8"), f32, "linear", conv_yA8_cairo32_le, NULL); babl_conversion_new (babl_format ("Y'A u16"), f32, "linear", -- 2.30.2